# NvChad_Config

My config for NeoVim based on [NvChad](https://nvchad.com) v2.5

Config created for work with Python and use Tabs for indent

[Original repo](https://notabug.org/Sekhali/NvChad_Config)

---

## Table of content

1. [Non-package requirements](#non-package-req)
2. [Preparations](#preparations)
3. [Required packages (Arch)](#req-packages)
4. [Required packages (Python)](#req-python)
4. [Post Install things](#post-install-things)
5. [Coding configs](#coding-configs)
6. [Installed Plugins list](#installed-plugins-list)
7. [Not installed plugins](#interesting-plugins-list)

---

## Non-package requirements:<a name="non-package-req"></a>

* Any [Nerd Font](https://www.nerdfonts.com/)


---

## Preparations:<a name="preparations"></a>
If you have config for neovim - backup them:

```bash
mv ~/.config/nvim ~/.config/nvim_bak
mv ~/.local/share/nvim ~/.local/share/nvim_bak
mv ~/.local/state/nvim ~/.local/state/nvim_bak
```

---

## Required packages (Arch)<a name="req-packages"></a>

* `neovim`
* `ripgrep` (for Telescope)
* `npm` (for install and work of some plugins)
* `luajit` (for vim-flog)

---

## Required packages (Python)<a name="req-python"></a>

* [pynvim](https://github.com/neovim/pynvim) (support python plugins in Nvim) (Python 3.7 or later)
* [black with tabs](https://pypi.org/project/black-with-tabs/) (python formatter, fork for use tabs) (Python 3.7 or later)

### Install all packages in one command (Arch)

### Warning - I installing python packages in system. It is unsafe. For this way - Python packages executables will be located in ~/.local/bin

`sudo pacman -Syu ripgrep neovim npm luajit && pip3 install --user --break-system-packages --upgrade pynvim black-with-tabs`

same but splitted commands
```bash
sudo pacman -Syu ripgrep neovim npm luajit
pip3 install --user --break-system-packages --upgrade pynvim black-with-tabs
```

### If neovim will not see black executable - create link in /usr/bin

```bash
sudo ln -s ~/.local/bin/black /usr/bin/black
```

<br>

## More safe way - install python packages to virtual env and use them in neovim. 

`sudo pacman -Syu ripgrep neovim npm luajit && mkdir -p ~/.local/venv && cd ~/.local/venv && python3 -m venv nvim && cd nvim && . ./bin/activate && pip3 install pynvim black-with-tabs`

same but splitted commands
```bash
sudo pacman -Syu ripgrep neovim npm luajit
mkdir -p ~/.local/venv
cd ~/.local/venv
python3 -m venv nvim
cd nvim
. ./bin/activate
pip3 install pynvim black-with-tabs
```

### After install with more safe command you should uncomment line with "python3_host_prog" in lua/options.lua

---

## Post install things<a name="post-install-things"></a>

### Type this inside neovim:

For install LSP and other things:

`:MasonInstallAll`

If Lazy didn't started:

`:Lazy update`

If TreeSitter didn't updated:

`:TSUpdate`

---

## Coding configs<a name="coding-configs"></a>

Formatters -> configs/conform.lua

LSP -> configs/lspconfig.lua

Linters -> configs/nvim-lint.lua

---

## Installed plugins list<a name="installed-plugins-list"></a>
Excluded plugins that included in NvChad by default and not listed in plugins/init.lua

1. [Conform.nvim](https://github.com/stevearc/conform.nvim) - formatter plugin

1. [dressing.nvim](https://github.com/stevearc/dressing.nvim) - Improve nvim UI (e.g. rename is showing not in bottom, but near renaming text)

1. [indent-blankline.nvim](https://github.com/lukas-reineke/indent-blankline.nvim) - show indents visually (by virtualtext)

1. [leap.nvim](https://github.com/ggandor/leap.nvim) - improved movement

1. [Mason.nvim](https://github.com/williamboman/mason.nvim) - install/update LSP/formatters/etc

1. [nvim-cmp](https://github.com/hrsh7th/nvim-cmp) - autocompletion
1. [nvim-colorizer](https://github.com/anhle199/NvChad-nvim-colorizer.lua) - show color in realtime. For example - #FF0000 will be Red. Part of NvChad
1. [nvim-lint](https://github.com/mfussenegger/nvim-lint) - linters support
1. [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) - LSP support for nvim
1. [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) - syntax highlight

1. [pretty-fold.nvim](https://github.com/bbjornstad/pretty-fold.nvim) - better folds for nvim

1. [todo-comments,nvim](https://github.com/folke/todo-comments.nvim) - highlight todo comments
1. [trouble.nvim](https://github.com/folke/trouble.nvim) - for better diagnostics show 


1. [vim-flog](https://github.com/rbong/vim-flog) - git branch viewer for vim
1. [vim-fugitive](https://github.com/tpope/vim-fugitive) - use Git inside vim
1. [vim-multiple-cursors](https://github.com/terryma/vim-multiple-cursors) - multiple cursors in vim
1. [vim-python-docstring](https://github.com/pixelneo/vim-python-docstring) - autogenerate docstrings for Python

1. [which-key.nvim](https://github.com/folke/which-key.nvim) - show available keymaps as popup


---


## Not installed plugins<a name="interesting-plugins-list"></a>

I found them interesting and may be install later, but now I don't need them.

Copy of this list located at the bottom of file [lua/plugins/init.lua](lua/plugins/init.lua) 

1. [codeium.vim](https://github.com/Exafunction/codeium.vim) - AI autocompletion (Copilot alternative) 

1. [diffview.nvim](https://github.com/sindrets/diffview.nvim) - Single tabpage interface for easily cycling through diffs for all modified files for any git rev.

1. [lazydev.nvim](https://github.com/folke/lazydev.nvim) - Properly configures LuaLS for editing your Nvim config by lazily updating your workspace libraries.


1. [nvim-bqf](https://github.com/kevinhwang91/nvim-bqf) - Better quickfix window
1. [neotest](https://github.com/nvim-neotest/neotest) - A framework for interacting with tests within NeoVim.
1. [nvim-dap](https://github.com/mfussenegger/nvim-dap) - Debug Adapter Protocol client implementation for NeoVim
1. [nvim-dap-ui](https://github.com/rcarriga/nvim-dap-ui) - A UI for nvim-dap
